

// 导入持久化的token方法
import * as auth from '../../utils/auth'
import { login, getUserInfo, getUserDetailById } from '../../api/user'

export default {
  namespaced: true,
  // 定义变量
  state: {
    // 登录成功的token  鉴权使用
    token: auth.getToken() || null,
    // 登录人信息（昵称，头像，权限）
    userInfo: {}
  },
  // 修改变量（定义修改变量的方法） 同步
  mutations: {
    /**
     * state 获取变量对象
     * token 外部调用传入的参数
    */
    setToken (state, token) {
      // 内存存
      state.token = token
      // 本地存
      auth.setToken(token)
    },
    delToken (state) {
      state.token = null
      auth.removeToken()
    },
    // 存储登录人信息
    setUserInfo (state, userInfo) {
      state.userInfo = userInfo
    },
    // 删除登录人信息
    delUserInfo (state) {
      state.userInfo = {}
    },
  },
  // 一般定义后台请求方法
  actions: {
    // 退出登录
    logoutAction({commit}){
      /**
       * 1.后台退出=》调用接口
       * 2.前端退出=》清除本地数据
      */
      commit('delToken')
      commit('delUserInfo')
    },
    // 获取登录人信息
    async getUserInfoAction ({ commit }) {

      const userInfo = await getUserInfo()
      // 依赖上一步用户Id，获取用户头像
      const phontnInfo = await getUserDetailById(userInfo.userId)
      console.log(userInfo, phontnInfo)
      commit('setUserInfo', {...userInfo,...phontnInfo})
      return userInfo
    },
    // 登录请求方法
    async getTokenAction ({ commit }, formDate) {
      const token = await login(formDate)
      console.log('token', token)
      commit('setToken', token)
    }
  }
}